package com.jojo.elementary.day6_string;

import java.util.HashMap;
import java.util.Map;

/**
 * 387、字符串中的第一个唯一字符
 *
 * 给定一个字符串 s ，找到它的第一个不重复的字符，并返回它的索引 。如果不存在，则返回 -1 。
 *
 * 示例 1：
 * 输入: s = "leetcode"
 * 输出: 0
 *
 * 示例 2:
 * 输入: s = "loveleetcode"
 * 输出: 2
 *
 * 示例 3:
 * 输入: s = "aabb"
 * 输出: -1
 *
 */
public class FirstUniqueStr {

    /** myCode 使用哈希表存储字符和索引，重复的字符索引设为-1 */
    public int firstUniqChar(String s) {
        int result = -1;
        Map<Character,Integer> map = new HashMap<>();
        for (int i = 0;i < s.length();i++){
            if(map.containsKey(s.charAt(i))){
                map.put(s.charAt(i),-1);
            }else {
                map.put(s.charAt(i),i);
            }
        }
        for (int i = 0;i < s.length();i++){
            if(map.get(s.charAt(i)) >= 0){
                result = i;
                break;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        FirstUniqueStr str = new FirstUniqueStr();
        String s = "aadadaad";
        System.out.println(str.firstUniqChar(s));
    }
}
